﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace CoTuong
{
    [Serializable]
    public class QuanSi :QuanCo
    {
        public QuanSi(Texture2D texture2D, int dong, int cot, int quan, Boolean isSelected)
            : base(texture2D, dong, cot, quan, isSelected)
        {

        }

        public override void Update(GameTime gameTime)
        {
            if (isSelected == true)
            {
                if (quan == 0)
                {
                    #region Di Chuyển Quân Sỉ Đỏ
                    if (QuanLyQuanCo.ktQuanCo[dong - 1, cot + 1] != 1 && dong > 7 && cot < 5)
                        this.diChuyen(dong - 1, cot + 1);

                    if (QuanLyQuanCo.ktQuanCo[dong - 1, cot - 1] != 1 && dong > 7 && cot > 3)
                        this.diChuyen(dong - 1, cot - 1);

                    if (dong < 9 && cot < 5)
                        if (QuanLyQuanCo.ktQuanCo[dong + 1, cot + 1] != 1)
                            this.diChuyen(dong + 1, cot + 1);

                    if (dong < 9 && cot > 3)
                        if (QuanLyQuanCo.ktQuanCo[dong + 1, cot - 1] != 1)
                            this.diChuyen(dong + 1, cot - 1);
                    #endregion
                }

                else
                {
                    #region Di Chuyển Quân Sỉ Xanh
                    if (dong > 0 && cot < 5)
                        if (QuanLyQuanCo.ktQuanCo[dong - 1, cot + 1] != 2)
                            this.diChuyen(dong - 1, cot + 1);

                    if (dong > 0 && cot > 3)
                        if (QuanLyQuanCo.ktQuanCo[dong - 1, cot - 1] != 2)
                            this.diChuyen(dong - 1, cot - 1);

                    if (QuanLyQuanCo.ktQuanCo[dong + 1, cot + 1] != 2 && dong < 2 && cot < 5)
                        this.diChuyen(dong + 1, cot + 1);

                    if (QuanLyQuanCo.ktQuanCo[dong + 1, cot - 1] != 2 && dong < 2 && cot > 3)
                        this.diChuyen(dong + 1, cot - 1);
                    #endregion
                }

                ViTriDiChuyen.X = -framesizeX;
                ViTriDiChuyen.Y = -framesizeY;
            }

            base.Update(gameTime);
        }

        public override void Draw(GameTime gameTime, SpriteBatch spriteBatch)
        {
            if (isSelected == true)
            {
                Vector2 ViTri = viTriQuanCo;
                if (quan == 0)
                {//Vẽ Quân Đỏ
                    #region Vẽ Vị Trí Chéo Phải Phía Trên
                    if (QuanLyQuanCo.ktQuanCo[dong - 1, cot + 1] != 1 && dong > 7 && cot < 5)
                        this.VeBuocDiQuanCo(dong - 1, cot + 1, spriteBatch);
                    #endregion

                    #region Vẽ Vị Trí Chéo Trái Phía Trên
                    if (QuanLyQuanCo.ktQuanCo[dong - 1, cot - 1] != 1 && dong > 7 && cot > 3)
                        this.VeBuocDiQuanCo(dong - 1, cot - 1, spriteBatch);
                    #endregion

                    #region Vẽ Vị Trí Chéo Phải Phía Dưới
                    if (dong < 9 && cot < 5)
                        if (QuanLyQuanCo.ktQuanCo[dong + 1, cot + 1] != 1)
                            this.VeBuocDiQuanCo(dong + 1, cot + 1, spriteBatch);
                    #endregion

                    #region Vẽ Vị Trí Chéo Trái Phía Dưới
                    if (dong < 9 && cot > 3)
                        if (QuanLyQuanCo.ktQuanCo[dong + 1, cot - 1] != 1)
                            this.VeBuocDiQuanCo(dong + 1, cot - 1, spriteBatch);
                    #endregion
                }

                else
                {//Vẽ Quân Xanh
                    #region Vẽ Vị Trí Chéo Phải Phía Trên
                    if (dong > 0 && cot < 5)
                        if (QuanLyQuanCo.ktQuanCo[dong - 1, cot + 1] != 2)
                            this.VeBuocDiQuanCo(dong - 1, cot + 1, spriteBatch);
                    #endregion

                    #region Vẽ Vị Trí Chéo Trái Phía Trên
                    if (dong > 0 && cot > 3)
                        if (QuanLyQuanCo.ktQuanCo[dong - 1, cot - 1] != 2)
                            this.VeBuocDiQuanCo(dong - 1, cot - 1, spriteBatch);
                    #endregion

                    #region Vẽ Vị Trí Chéo Phải Phía Dưới
                    if (QuanLyQuanCo.ktQuanCo[dong + 1, cot + 1] != 2 && dong < 2 && cot < 5)
                        this.VeBuocDiQuanCo(dong + 1, cot + 1, spriteBatch);
                    #endregion

                    #region Vẽ Vị Trí Chéo Trái Phía Dưới
                    if (QuanLyQuanCo.ktQuanCo[dong + 1, cot - 1] != 2 && dong < 2 && cot > 3)
                        this.VeBuocDiQuanCo(dong + 1, cot - 1, spriteBatch);
                    #endregion
                }
            }

            base.Draw(gameTime, spriteBatch);
        }
    }
}
